package com.platform.qujia.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PayOrder implements Serializable {

    private Integer orderId;
    //订单号
    private String orderNo;
    //加油枪号
    private String oilGun;
    //油品名称
    private String oilName;
    //用户id(消费者)
    private Integer consumerId;

//    满足的优惠券活动是实付还是应付
    private int amtOrReceivable;
    //优惠券数量
    private Integer couponCount;
    //消费者
    private String consumer;
    //实收金额
    private Double amt;
    //油企id
    private Integer enterpriseId;
    //油站id
    private Integer stationId;
    private String status;
    private String xJStatus;        //小程序内现金支付：现金支付的状态（0申请1取消）
    private String orderLiters;
    //支付类型：wx,zfb,dzk,xj,yl,hyk,yhk,cdk
    private String payType;
    private String appType;         //订单来源容器
    //@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date payDate;
    private String oilPersonnel;
    private String oilPersonnelId;
    /**支付方式*/
    private List<Long> payWayIdList;
    //@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdDate;
    private String orderType;
    private String oilPirce;
    private String stationName;
    private String enterpriseName;
    private Double receivableAmt;   //应收金额
    private Double commission;   //渠道费
    private Double receivedAmt;    //到账金额
    private String discountCoupon;  //优惠券
    private Double discountAmt;    //优惠金额
    private Double discountCouponAmt; //优惠券金额
    @ApiModelProperty("返现金额优惠")
    private BigDecimal returnCashAmt;

    @ApiModelProperty("赠送返现金额")
    private BigDecimal giftReturnCash;

    private Double wxAmt; //微信支付金额
    private Double zfbAmt; //支付宝支付金额
    private Double posAmt; //pos支付金额
    private Double xjAmt; //现金支付金额
    private Double didiAppAmt; //滴滴app支付金额
    private Double tyAppAmt; //团油app支付金额
    private Double otherAmt; //其他支付金额
    private Double dzkAmt; //电子卡金额
    private Integer score; //消费积分
    private String memberNo; //会员卡号
    private Double memberAmt; //会员支付金额
    private Integer printCount; //打印小票数量
    private String carNo; //车牌号
    private String customerPhone; //客户电话
    private String mobilePhone; //关联app_user_info字段手机号
    private String customerGrade; //客户等级
    private String oilType; //油品类型 oil_type
    private String transactionId;      //  交易单号（微信）
    private String merchantsNumber;  //商户单号（商户）
    private String printSetting;        //打印方式
    private Integer payWayId;           //第三方支付方式
    /**
     * 费率
     */
    private BigDecimal serviceCharge;
    private BigDecimal balance;         //电子卡余额
    private BigDecimal presentAmt;//赠送金额

    private String beginTime;
    private String endTime;
    private String groupBy;

    private String classStructureNo;
    private String classStartDate;
    private String classStructureDate;
    private String classStructureMan;

    private String payTypeName;

    private Long activityId;
    //分页参数
    private Integer pageNum;
    private Integer pageSize;

    private String beginTimeQOQ;    //环比开始时间
    private String endTimeQOQ;      //环比结束时间
    private AppUserInfo appUserInfo;

    private String integral;

    //打印小票所需的设备的参数
    private String posFanoutExchange;
    private String posQueue;
    private String deviceNo;

    //LNG加气平台参数
    private Double sellOilPrice;        //销售价
    private Double sellAmt;             //销售金额
    private Double sellDiscountAmt;     //销售价后优惠金额
    private Double driverDiscountAmt;   //司机价后优惠金额
    private Double driverOilPrice;      //司机价
    private String isLngFlagGroup;


    private String orderOriginType;     //订单来源
    private String orderRandomId;       //POS随机数
    private String userType;           //用户类型
    private String unionId;            //用户unionId
    private String unitCode;
    private Integer oilId;
    private String statusName;        //
    private String truckNumber;       //车牌号
    private String cardType;           //油品 卡类型

    private String userId;          //POS登录人ID
    //此参数勿动！
    private String noOrderPerFlag;   //POS端查询订单打印时参数标志：1、当前用户和没有加油员的订单；

    private String tlShiftsMask;    //班次标识
    private String tlShiftsTime;   //班次时间


    private Long rulesId;//关联的立减活动的规则id 只用来接收参数计算

    private String activityDeleteFalg;   //判断当前的立减活动是否删除
    private String dicountAmtDeleteFalg;   //判断当前折扣金额是否清空

    private Integer labelId;   //标签id
    private String labelName;   //标签名称
    private String couponUserId;
    //渠道手续费支付方 0司机/1油企
    private String channelFeePayer;
    private BigDecimal originalAmt; //原实收金额
    /**
     * 订单来源
     * 1-扫码订单
     * 9-其它
     */
    private String utmSource;

    private Integer isPrint;

    //车队卡类型
    private String cdkType;

    private String recordType;

    /**
     * 实际充值金额付款的金额，电子卡支付订单开票用到
     */
    private BigDecimal actualRechargeAmt;
    //充值立减活动优惠金额
    private BigDecimal rechargeDiscountAmt;
    //消费立减活动优惠金额
    private BigDecimal consumeDiscountAmt;

    //客户端订单号
    private String clientOrderNo;

    //客户端流水号
    private String clientSerialNo;

    //云华支付前置商户号
    private String mno;

    /**
     * 退款时间
     */
    private Date refundSuccessDate;

    /**
     * 审批状态
     */
    private String examinStatus;
    /**
     * 实际实付金额
     * 针对后台是否显示服务费需求,只有第三方支付有值,非第三方不设置
     */
    private BigDecimal actualAmt;

    private Long cdkId;

    private String bindingType;

    private String outOrderNo;

    private String platformDiscount;

    @ApiModelProperty("发票状态  0未开 1已开 2部分开 3 不支持开票")
    private Integer invoiceStatus;

    /**
     * 合并支付订单号
     */
    private String unitePayOrderNo;


    @ApiModelProperty(value = "组合支付订单号")
    private String orderMergeNo;

    private BigDecimal bargainAmt;           //议价后金额
    private BigDecimal bargainDiscountAmt;           //议价优惠金额

    @ApiModelProperty(value = "电子卡副卡id")
    private Long deputyId;

    @ApiModelProperty(value = "电子卡副卡余额")
    private BigDecimal deputyBalance;

    @ApiModelProperty(value = "消费副卡的主卡用户手机号")
    private String deputyMobilePhone;

    @ApiModelProperty(value = "积分抵扣活动id")
    private Long integralActivityId;

    @ApiModelProperty(value = "积分抵扣金额")
    private BigDecimal integralDeductionAmt;

    @ApiModelProperty(value = "订单抵扣积分值")
    private Long integralDeductionNum;
}
